A virtual machine (VM) is a software-based emulation of a physical computer. Although virtual machines are software-based emulations, the emulations still utilize physical resources in physical machines referred to as host computers.
A virtual server, such as VMware® vCenter Server™, can provide a centralized way of managing virtual infrastructure resources like compute, storage, networks, etc. Infrastructure resources can also be aggregated and grouped using abstractions such as a cluster. Datastores can similarly be grouped into datastore clusters.
A scheduler, such as VMware vSphere® Distributed Resource Scheduler™ (vSphere DRS), can be employed and configured to perform various management functions in order to efficiently allocate resources within hosts to VMs in a cluster. A virtual server can provide a way of performing intelligent and automatic resource management within clusters via the scheduler. For example, the scheduler can perform automatic initial placement of a virtual machine within a compute cluster. Similarly, a storage scheduler, such as VMware vSphere® Storage DRS™, can similarly perform automatic selection of datastores for placing virtual machine disks (VMDKs) of the VMs. However, with the increasing scale of virtualized datacenters, current abstractions such as clusters are not sufficient.
A virtual datacenter (VDC) is an abstraction that can provide seamless aggregation of infrastructure resources across clusters. Compute resources are aggregated across clusters into a single pool of resources called a compute fabric. Similarly, storage and network resources are pooled and managed via a storage fabric and a network fabric, respectively. Delegation of these resources to VMs and virtual applications (vApps) is intelligently handled by a placement engine (PE) which performs resource- and policy-aware placement in the VDC. The VDC is a key building block towards a software-defined datacenter vision in which infrastructure is abstracted from underlying hardware and aggregated into pools of resources.
The PE tries to achieve multiple objectives while making a placement decision. For example, the PE considers balanced utilization of multiple resources across clusters, avoids fragmentation of resources, and handles policy constraints like storage profiles, affinity/anti-affinity rules, etc. The scale and complexity of the underlying infrastructure makes it difficult to design an effective, yet highly scalable, PE. Prototyping, iterating, and testing a PE that can handle thousands of VMs and hosts is difficult to perform with real physical hardware.